| Автор перевода: Майкл "Antares" Клишин | Предыдущая | Следующая | Оглавление |
Flash Player 5.
this
Идентификатор (ключевое слово); указывает на объект или мувиклип. Во время выполнения скрипта this указывает на мувиклип, содержащий скрипт с этим идентификатором. При вызове метода, this указывает на объект, содержащий вызванный метод.
Внутри обработчика события on(), присоединенного к кнопке, this указывает на Таймлайн, в котором эта кнопка находится. Внутри обработчика событий onClipEvent(), присоединенного к мувиклипу, this указывает на Таймлайн самого мувиклипа.
Так как значение this зависит от контекста скрипта, в котором этот идентификатор содержится, вы не можете использовать this в скрипте для обращения к переменной, определенной внутри класса. Создайте файл ApplyThis.as со следующим содержимым:
class ApplyThis {
var str:String = "Определена в ApplyThis.as";
function conctStr(x:String):String {
return x+x;
}
function addStr():String {
return str;
}
}
Затем, во FLA или AS файле, наберите следующий код:
var obj:ApplyThis = new ApplyThis(); var abj:ApplyThis = new ApplyThis(); abj.str = "Определена во FLA или AS"; trace(obj.addStr.call(abj, null)); //выводит: defined in FLA or AS trace(obj.addStr.call(this, null)); //выводит: undefined trace(obj.addStr.call(obj, null)); //выводит: Defined in applyThis.as
Подобным образом ,для вызова функции, определенной в динамическом классе, вы должны использовать ключевое словоthis для вызова функции в нужной области видимости:
// неверно:
/*
dynamic class Simple {
function callfunc() {
trace(func());
}
}
*/
// верно:
dynamic class simple {
function callfunc() {
trace(this.func());
}
}
Внутри FLA или AS файла введите следующий код:
var obj:Simple = new Simple();
obj.num = 0;
obj.func = function() {
return true;
};
obj.callfunc();
// выводит: true
При использовании некорректного варианта компилятор выдаст синтаксическую ошибку.
В следующем примере ключевое слово this указывает на объект Circle:
function Circle(radius:Number):Void {
this.radius = radius;
this.area = Math.PI*Math.pow(radius, 2);
}
var myCircle = new Circle(4);
trace(myCircle.area);
В следующем выражении, находящемся в кадре мувиклипа , this указывает на Таймлайн этого мувиклипа.
// устанавливает прозрачность данного мувиклипа равной 20this._alpha = 20;
В следующем выражении внутри обработчика MovieClip.onPress, this указывает на мувиклип:
this.square_mc.onPress = function() {
startDrag(this);
};
this.square_mc.onRelease = function() {
stopDrag();
};
on(),onClipEvent()
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | Оглавление | |